home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 47.7z / BS1 part 47 / HiSoft BASIC v1.04 (1989)(HiSoft)(Disk 2 of 2)[h Band].7z / HiSoft BASIC v1.04 (1989)(HiSoft)(Disk 2 of 2)[h Band].adf / graphics / iffread1.bas < prev    next >
Encoding:
BASIC Source File  |  1988-11-25  |  1.4 KB  |  65 lines

  1.  INPUT "filename";Nam$
  2.  OPEN Nam$ FOR INPUT AS 1
  3.     Form$=INPUT$(4,1)
  4.     Length=CVL(INPUT$(4,1))
  5.     IF INPUT$(4,1)<>"ILBM" THEN
  6.     PRINT "Error in data!"
  7.     END
  8.     END IF
  9.     
  10.  
  11. ReadData:
  12.     IF EOF(1) THEN END
  13.     Chunk$=INPUT$(4,1)
  14.     Length=CVL(INPUT$(4,1))
  15.     IF INT(Length/2)<>(Length/2) THEN Length=Length+1
  16.     IF Chunk$="BMHD" THEN BMHeader
  17.     IF Chunk$="CMAP" THEN ColorMap
  18.     IF Chunk$="BODY" THEN BodyMap
  19.     Dummy$=INPUT$(Length,1)
  20.   GOTO ReadData
  21.  
  22. BMHeader:  
  23.     xd=CVI(INPUT$(2,1))
  24.     
  25.     yd=CVI(INPUT$(2,1))
  26.     
  27.     Dummy$=INPUT$(4,1)
  28.     BitPlane=ASC(INPUT$(1,1))
  29.     Dummy$=INPUT$(11,1)
  30.     IF xd =320 THEN Typ =1
  31.     IF xd = 640 THEN Typ =2
  32.     IF yd >200 THEN Typ=Typ+2
  33.     SCREEN 1,xd,yd,BitPlane,Typ
  34.     WINDOW 2,Nam$,,0,1
  35.     Addr=PEEKL(WINDOW(8)+4)+8
  36.     FOR x=0 TO BitPlane-1
  37.       PlaneAddr(x)=PEEKL(Addr+4*x)
  38.     NEXT x
  39.   GOTO ReadData
  40.     
  41. ColorMap:
  42.     FOR x=1 TO (Length/3)
  43.       r=(ASC(INPUT$(1,1)) AND 240)/16
  44.       g=(ASC(INPUT$(1,1)) AND 240)/16
  45.       b=(ASC(INPUT$(1,1)) AND 240)/16
  46.       
  47.         PALETTE (x-1),r/16,g/16,b/16
  48.     NEXT x
  49.     IF INT(Length/3)<>(Length/3) THEN Dummy$=INPUT$(1,1)
  50.   GOTO ReadData
  51.     
  52. BodyMap:
  53.     ByteLine=xd/8
  54.     FOR y1=0 TO yd-1
  55.       FOR b=0 TO BitPlane-1
  56.         
  57.           FOR x1=0 TO ByteLine/4-1
  58.             POKEL PlaneAddr(b)+4*x1+40*y1,CVL(INPUT$(4,1))
  59.           NEXT x1
  60.      NEXT b
  61.     NEXT y1
  62.   GOTO ReadData     
  63.  
  64.  
  65.